home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / MOS / SYSINFO.I < prev    next >
Encoding:
Text File  |  1995-04-11  |  5.8 KB  |  3 lines

  1. ⓪ IMPLEMENTATION MODULE SysInfo;⓪ (*$X+,Y+,L-,N+*)⓪ ⓪ (*⓪!* 17.10.90  FPU() verändert FPU-Status nicht mehr -> keine Prot-Violation⓪!* 30.10.90  FPUModel() liefert korrekten Wert bei 68882 im TT⓪!* 10.11.90  68030-Erkennung korrigiert, aber nicht getestet⓪!* 17.12.90  68030-Erkennung nochmals korrigiert, aber nicht getestet⓪!*           Besser: Bei 68030 gibt's offenbar zusätzliche Register TT0/TT1.⓪!*           Sie sollten abgefragt werden, allerdings habe ich keinen Code⓪!*           für sie!⓪!* 08.02.91  68030-Erkennung nochmals korrigiert und getestet.⓪!* 14.02.92  CallSuper/ToSuper statt Supexec wg. MinT⓪!* 28.02.92  GetTOSVersion korrigiert.⓪!* 11.04.95  68040-Erkennung f. CPU()⓪!*)⓪ ⓪ FROM SYSTEM IMPORT ASSEMBLER;⓪ FROM MOSGlobals IMPORT Date;⓪ FROM CookieJar IMPORT GetCookie;⓪ FROM MOSSupport IMPORT CallSuper, ToSuper, ToUser;⓪ ⓪ PROCEDURE UnpackDate ( d: CARDINAL ): Date;⓪"BEGIN⓪$ASSEMBLER⓪(MOVE    -(A3),D0⓪(⓪(MOVE    D0,D1⓪(ANDI    #$1F,D1⓪(MOVE    D1,(A3)+⓪(⓪(LSR     #5,D0⓪(MOVE    D0,D1⓪(ANDI    #$F,D1⓪(MOVE    D1,(A3)+⓪(⓪(LSR     #4,D0⓪(ADDI    #1980,D0⓪(MOVE    D0,(A3)+⓪$END⓪"END UnpackDate;⓪ ⓪ PROCEDURE cpuTest;⓪"BEGIN⓪$ASSEMBLER⓪(MOVE.L  A7,D2⓪(LEA     $10,A1          ; Illegal Instruction Exc-Vektor⓪(MOVE.L  (A1),D1⓪(LEA     b(PC),A0⓪(MOVE.L  A0,(A1)⓪(MOVE.L  #68000,D0⓪(DC.W    $51FC           ; TRAPF⓪(MOVE.L  D1,(A1)⓪((* dieser 68030-Test klappt nicht:⓪*LEA     $2C,A1          ; Line F Exc-Vektor⓪*MOVE.L  (A1),D1⓪*LEA     b(PC),A0⓪*MOVE.L  A0,(A1)⓪*MOVE.L  #68020,D0⓪*DC.W    $F000,4300      ; PMOVE TC,D0⓪*MOVE.L  #68030,D0⓪(*)⓪(MOVE.L  #68030,D0⓪(; Erkennung der 68030 durch Aktivieren und Prüfen des Data-Cache⓪(MOVEC   CACR,D1⓪(MOVE.L  D1,D2⓪(ORI.W   #100100000000%,D2 ; clear & enable data cache⓪(MOVE    SR,-(A7)⓪(ORI     #$0700,SR⓪(MOVEC   D2,CACR         ; enable data cache⓪(MOVEC   CACR,D2         ; read cache ctrl reg⓪(BTST    #8,D2           ; data cache enabled?⓪(BNE     e⓪(BSET    #15,D2          ; enable 68040 instr. cache⓪(MOVEC   D2,CACR         ; write cache reg⓪(MOVEC   CACR,D2         ; read cache ctrl reg⓪(MOVE.L  #68020,D0⓪(BTST    #15,D2⓪(BEQ     e⓪(MOVE.L  #68040,D0⓪&e MOVEC   D1,CACR⓪(MOVE    (A7)+,SR⓪(RTS⓪&b MOVE.L  D2,A7⓪(MOVE.L  D1,(A1)⓪$END⓪"END cpuTest;⓪ ⓪ PROCEDURE CPU (): LONGCARD;⓪"BEGIN⓪$ASSEMBLER⓪(PEA     cpuTest⓪(JSR     CallSuper⓪(ADDQ.L  #4,A7⓪(MOVE.L  D0,(A3)+⓪$END⓪"END CPU;⓪ ⓪ PROCEDURE Has020 (): BOOLEAN;⓪"BEGIN⓪$ASSEMBLER⓪(JSR     CPU⓪(CMPI.L  #68020,-(A3)⓪(SCC     D0⓪(ANDI    #1,D0⓪(MOVE    D0,(A3)+⓪$END⓪"END Has020;⓪ ⓪ PROCEDURE FPU (): FPUType;⓪"BEGIN⓪$ASSEMBLER⓪(SUBQ.L  #4,A7⓪(JSR     ToSuper⓪ ⓪(JSR     cpuTest⓪(CMPI.L  #68020,D0⓪(BCS     noLineF⓪ ⓪(; bei 68020 Line F-Test machen⓪(; alle Interrupts sperren, weil LineF-Vektor verbogen wird⓪(MOVE.L  A7,D2⓪(MOVE.L  $2C,D1          ; Line F emulator⓪(LEA     c(PC),A0⓪(MOVE    SR,D0⓪(ORI     #$0700,SR       ; TT 16.1.93 (vorher: MOVE #$2700,SR)⓪(MOVE.L  A0,$2C⓪(FNOP⓪(MOVE.L  D1,$2C⓪(MOVE    D0,SR⓪(MOVEQ   #internalFPU,D0⓪(BRA     e               ; wir haben eine FPU zur 68020 erkannt⓪ ⓪&c MOVE.L  D1,$2C⓪(MOVE    D0,SR⓪(MOVE.L  D2,A7⓪ ⓪&noLineF⓪(MOVEQ   #noFPU,D0⓪(MOVE.L  A7,D2⓪(MOVE.L  $08,D1          ; BusError-Exc-Vektor⓪(LEA     b(PC),A0⓪(MOVE.L  A0,$08⓪(TST.W   $FFFFFA40⓪(MOVEQ   #externalFPU,D0⓪&b MOVE.L  D2,A7⓪(MOVE.L  D1,$08⓪&e MOVE    D0,(A3)+⓪(⓪(JSR     ToUser⓪(ADDQ.L  #4,A7⓪$END⓪"END FPU;⓪ ⓪ PROCEDURE GetTOSVersion (VAR version, revision: CARDINAL;⓪9VAR date: Date);⓪"BEGIN⓪$ASSEMBLER⓪(SUBQ.L  #4,A7⓪(JSR     ToSuper⓪ ⓪(MOVE.L  $4F2,A0           ; sysbase⓪(MOVEQ   #0,D0⓪(MOVE.B  2(A0),D0⓪(MOVE.L  -12(A3),A2⓪(MOVE.W  D0,(A2)         ; version⓪(MOVE.B  3(A0),D0⓪(MOVE.L  -8(A3),A2⓪(MOVE.W  D0,(A2)         ; revision⓪(MOVE.L  -(A3),-(A7)     ; ADR(date)⓪(MOVE.W  $1E(A0),(A3)+   ; Datum aus TOS-Header⓪(JSR     UnpackDate⓪(MOVE.L  (A7)+,A0⓪(MOVE.W  -(A3),4(A0)     ; date.year⓪(MOVE.L  -(A3),(A0)      ; date.day/month⓪(SUBQ.L  #8,A3⓪(⓪(JSR     ToUser⓪(ADDQ.L  #4,A7⓪$END⓪"END GetTOSVersion;⓪"⓪ PROCEDURE UseStackFrame (): BOOLEAN;⓪"BEGIN⓪$ASSEMBLER⓪(PEA     a(PC)⓪(JSR     CallSuper⓪(ADDQ.L  #4,A7⓪(MOVE    D0,(A3)+⓪(RTS⓪ ⓪&a MOVE.L  A7,D2⓪(MOVE.L  $10,D1  ; Illegal Instruction Exc-Vektor⓪(LEA     b(PC),A0⓪(MOVE.L  A0,$10⓪(DC.W    $4AFC   ; ILLEGAL⓪&b MOVE.L  A7,D0⓪(MOVE.L  D2,A7⓪(SUB.L   D0,D2⓪(SUBQ.L  #6,D2⓪(SNE     D0⓪(ANDI    #1,D0⓪(MOVE.L  D1,$10⓪$END⓪"END UseStackFrame;⓪ ⓪ PROCEDURE Machine (): CARDINAL;⓪"BEGIN⓪$ASSEMBLER⓪(MOVE.L  #$5F4D4348,(A3)+        ;"_MCH"⓪(CLR.L   -(A7)⓪(MOVE.L  A7,(A3)+⓪(JSR     GetCookie⓪(SUBQ.L  #2,A3⓪(MOVE.W  (A7)+,(A3)+⓪(ADDQ.L  #2,A7⓪$END⓪"END Machine;⓪ ⓪ PROCEDURE FPUModel (): CARDINAL;⓪"BEGIN⓪$ASSEMBLER⓪(JSR     FPU⓪(MOVE    -(A3),D0⓪(CMPI    #2,D0           ; internal?⓪(BCC     gr              ; nein - dann immer 1 bei externer FPU liefern⓪(MOVE    D0,(A3)+⓪(RTS⓪(⓪%gr SUBQ.L  #4,A7⓪(JSR     ToSuper⓪ ⓪(MOVEQ   #0,D0⓪(MOVE.L  A7,A0⓪(FSAVE   -(A7)⓪(CMPI.B  #$18,1(A7)⓪(MOVE.L  A0,A7⓪(SEQ     D0⓪(ADDQ.B  #2,D0⓪(MOVE    D0,(A3)+⓪(⓪(JSR     ToUser⓪(ADDQ.L  #4,A7⓪$END⓪"END FPUModel;⓪ ⓪ END SysInfo.⓪ ə
  2. (* $FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$000002C3$FFEF48E4$00001497$FFEF48E4$000006B9$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4Ç$000002C3T.......T.......T.......T.......T.......T.......T.......T.......T.......T.......$000002C3$FFAD49B2$FFAD49B2$FFAD49B2$0000082A$00000833$000007D4$000008A8$0000087E$000008AB$0000087A$000008A8$00000866$000008A8$0000029F$000002A9äÇé*)
  3.